package com.starry.module.system.core.oauth2.controller.admin;

import com.starry.core.common.domain.R;
import com.starry.core.web.core.controller.BaseController;
import com.starry.module.system.api.checkcode.domain.qo.CaptchaCreateQo;
import com.starry.module.system.api.checkcode.enums.GenerateCodeType;
import com.starry.module.system.core.checkcode.service.CheckCodeService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;

import static com.starry.core.common.constants.CodeType.ADMIN_LOGIN;

/**
 * 后台验证码
 *
 * @author xiaoke
 */
@Tag(name = "后台验证码")
@RequestMapping("system/oauth2/code")
@RestController
public class CodeController extends BaseController {

    private final CheckCodeService checkCodeService;

    public CodeController(CheckCodeService checkCodeService) {
        this.checkCodeService = checkCodeService;
    }

    /**
     * 获取验证码
     *
     * @param type 验证码类型
     * @return HashMap<String, String>
     */
    @Operation(summary = "获取登录验证码")
    @GetMapping("login")
    public R<HashMap<String, String>> getCode(@RequestParam("type") GenerateCodeType type) {
        CaptchaCreateQo captchaCreateQo = new CaptchaCreateQo();
        captchaCreateQo.setType(type);
        captchaCreateQo.setCodeType(ADMIN_LOGIN);
        return success(checkCodeService.generate(captchaCreateQo));
    }
}
